home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-03
/
iqb9104.zip
/
UNSIGNED.BAS
< prev
Wrap
BASIC Source File
|
1991-03-21
|
2KB
|
103 lines
' UNSIGNED.BAS
'
DECLARE FUNCTION usiADD% (A%, B%)
DECLARE FUNCTION usiSUB% (A%, B%)
DECLARE FUNCTION usiIDIV% (A%, B%)
DECLARE FUNCTION usiMOD% (A%, B%)
DECLARE FUNCTION usiMUL% (A%, B%)
DECLARE FUNCTION usiLET% (A&)
DECLARE FUNCTION usiVAL& (A%)
' Add two unsigned integers
X% = usiLET%(47500)
Y% = usiLET%(10250)
Z% = usiADD%(X%, Y%)
PRINT usiVAL&(Z%)
' Subtract two unsigned integers
X% = usiLET%(64486)
Y% = usiLET%(32100)
Z% = usiSUB%(X%, Y%)
PRINT usiVAL&(Z%)
' Split an unsigned integer into bytes
AX% = &HE0F0
AXHi% = usiIDIV%(AX%, 256)
AXLow% = usiMOD%(AX%, 256)
PRINT HEX$(AX%), HEX$(AXHi%), HEX$(AXLow%)
' Combine two bytes into an unsigned integer
A% = usiLET%(&H81)
B% = usiLET%(&H7F)
C% = usiMUL%(A%, 256) OR B%
PRINT HEX$(C%)
' Assign an otherwise negative value
' to an unsigned integer & display it
A% = usiLET%(&H8002)
PRINT usiVAL&(A%)
' Compare two unsigned integers
A% = usiLET%(45000)
B% = usiLET%(32000)
IF usiVAL&(A%) > usiVAL&(B%) THEN PRINT "A% > B%"
' Function to add two unsigned integers
FUNCTION usiADD% (A%, B%) STATIC
tempA& = A% - 65536 * (A% < 0)
tempB& = B% - 65536 * (B% < 0)
sum& = tempA& + tempB&
usiADD% = sum& + 65536 * (sum& > 32767)
END FUNCTION
' Function to do unsigned integer division
FUNCTION usiIDIV% (A%, B%) STATIC
tempA& = A% - 65536 * (A% < 0)
tempB& = B% - 65536 * (B% < 0)
div& = tempA& \ tempB&
usiIDIV% = div& + 65536 * (div& > 32767)
END FUNCTION
' Function to assign an unsigned value to an integer
FUNCTION usiLET% (A&) STATIC
usiLET% = A& + 65536 * (A& > 32767)
END FUNCTION
' Function to perform unsigned modular arithmetic
FUNCTION usiMOD% (A%, B%) STATIC
tempA& = A% - 65536 * (A% < 0)
tempB& = B% - 65536 * (B% < 0)
rmnd& = tempA& MOD tempB&
usiMOD% = rmnd& + 65536 * (rmnd& > 32767)
END FUNCTION
' Function to multiply two unsigned integers
FUNCTION usiMUL% (A%, B%) STATIC
tempA& = A% - 65536 * (A% < 0)
tempB& = B% - 65536 * (B% < 0)
prod& = tempA& * tempB&
usiMUL% = prod& + 65536 * (prod& > 32767)
END FUNCTION
' Function to subtract two unsigned integers
FUNCTION usiSUB% (A%, B%) STATIC
tempA& = A% - 65536 * (A% < 0)
tempB& = B% - 65536 * (B% < 0)
dif& = tempA& - tempB&
usiSUB% = dif& + 65536 * (dif& > 32767)
END FUNCTION
' Function to return the value of an unsigned integer
' as a long
FUNCTION usiVAL& (A%) STATIC
usiVAL& = A% - 65536 * (A% < 0)
END FUNCTION